#!/bin/bash

set -ex

#
# Pushes smartcontract/explorer:circleci to relevant location based on passed args:
# push_explorer <branch> <gittag>
# ie:
# push_explorer master 0.6.9
# push_explorer develop
# push_explorer release/0.6.9
#
# Ignores anything not matching above.
# Key assumption: local version of smartcontract/explorer:circleci is the image
# to work with.
#

if [ -z "$DOCKERHUB_PASS" ]
then
  echo "Cannot push to dockerhub, credentials are missing."
  exit 1
fi


circle_branch="$1"
circle_tag="$2"

PROJECT_ROOT=`git rev-parse --show-toplevel`
pushd $PROJECT_ROOT >/dev/null

tag_and_push() {
  # ie: docker tag and push smartcontract/explorer:0.9.1, since DOCKER_TAG=0.9.1
  export DOCKER_TAG=$1
  (set -x; docker tag smartcontract/explorer:circleci smartcontract/explorer:${DOCKER_TAG})
  pushd explorer
  make dockerpush
  popd
}

branch_tag=`tools/ci/branch2tag ${circle_branch}` # ie: develop, latest, candidate-*, etc.
version_tag=`tools/ci/gittag2dockertag ${circle_tag}` # aka GIT_TAG. explorer-v0.9.1 -> 0.9.1

# version tag takes precedence.
if [ -n "${version_tag}" ]; then
  tag_and_push "$version_tag"
  # if version tag, also push latest.
  # ie: after pushing smartcontract/explorer:0.6.9, also update smartcontract/explorer:latest
  tag_and_push latest
elif [ -n "$branch_tag" ]; then
  tag_and_push "$branch_tag"
else
  echo "Skipping publishing for this branch/tag."
fi
